package com.moehu.back.dao;
import com.moehu.back.model.*;
import com.moehu.back.model.response.OpusInfoResponseModel;
import com.moehu.back.model.response.OpusSearchUser;
import com.moehu.back.model.response.RankingResponseModel;
import io.swagger.models.auth.In;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface OpusDao {
    List<OpusModel> getOpusList();
    List<OpusModel> getFollowList(List<Integer> ids);
    List<Integer> getUserFollowId(Integer id);
    List<RankingResponseModel> getRankingOpusList();
    Integer addFollowUser(Integer user_source_id, Integer user_to_id);
    Integer cancelFollowUser(Integer user_source_id, Integer user_to_id);
    Integer checkFollowUser(Integer user_source_id, Integer user_to_id);
    OpusInfoResponseModel getOpusInfo(Integer id);
    List<CommentModel> getUserComment(Integer opus_id, Integer dynamic_id, Integer comment_type);
    List<CommentModel> getReplyComment(Integer id);
    List<OpusModel> getNewsOpus(Integer user_id, Integer opus_id);
    Integer CollectionOpus(Integer user_id, Integer opus_id);
    Integer cancelCollectionOpus(Integer user_id, Integer opus_id);
    List<Map<String, Integer>> getCollectionUserId(Integer user_id);
    List<OpusModel> OpusList(Integer user_id);
    List<OpusModel> MyOpusList(Integer user_id);
    Integer upvoteOpus(Integer user_id, Integer opus_id);
    Integer upvoteDynamic(Integer user_id, Integer dynamic_id);

    Integer updateOpusStatus(Integer opus_id, Integer opus_status);
    Integer deleteUpvoteOpus(Integer user_id, Integer opus_id);
    Integer deleteUpvoteDynamic(Integer user_id, Integer dynamic_id);

    Integer addUpvoteOpus(Integer user_id, Integer opus_id);
    Integer addUpvoteDynamic(Integer user_id, Integer dynamic_id);


    Integer reduceUpvoteCount(Integer opus_id);
    Integer reduceUpvoteDynamicCount(Integer dynamic_id);

    Integer addUpvoteCount(Integer opus_id);
    Integer UpvoteDynamicCount(Integer dynamic_id);

    List<ImgModel> collectionOpusInfo(Integer opus_id);
    Integer addSeeCount(Integer opus_id);
    Integer addCollectionCount(Integer opus_id);
    Integer reduceCollectionCount(Integer opus_id);
    List<ImgModel> getOpusImg(Integer opus_id);
    Integer isSeeOpus(String see_address, Integer opus_id);
    Integer addOpus(PushOpusModel opus);
    Integer OpusCreatedTag(List<TagModel> tag);
    Integer OpusCreatedImg(List<ImgModel> img);
    Integer checkOpusIsCollection(Integer opus_id, Integer user_id);
    List<OpusModel> OpusSearch(List<String> keyword);
    List<OpusSearchUser> UserSearch(List<String> keyword);
    List<OpusModel> TagSearch(List<String> keyword);
    List<OpusModel> opusAudit(String opus_title, String opus_status, String opus_type, String opus_original);
}
